#!/bin/bash
#description: mt安装liunx

#配置信息
#============================================================
#系统链接
URL="https://gitee.com/xiaozhi-210/mt_liunx/raw/maim"
MT_URL="https://gitee.com/xiaozhi-210/mt_liunx/raw/maim/MT"
liunx_URL="https://gitee.com/xiaozhi-210/mt_liunx/raw/maim/liunx"
#系统目录
DIR="${DIR:-$HOME}"
#210信息
NAME=v1.0.0;
VERSION=202304040
#函数信息
#============================================================
#获取url内容🙂
function geturl(){
    curl -L --retry 2 --connect-timeout 5 ${@}
}

#下载liunx🙂
file_liunx() {
    #系统链接
    liunx="https://mirrors.tuna.tsinghua.edu.cn/lxc-images/images/${1}/${2}/arm64/default/"
    #截取日期
    Date="$(curl -s /dev/null "${liunx}"|grep 'href="'|tail -n 1|sed 's|.*href="||;s|/".*||')"&&[ -n "$Date" ]||echo "下载失败"
    #下载链接
    liunx="https://mirrors.tuna.tsinghua.edu.cn/lxc-images/images/${1}/${2}/arm64/default/${Date}/rootfs.tar.xz"
    #下载系统
    curl -o rootfs.tar.xz ${liunx}||{ rm -rf "rootfs.tar.xz";echo "下载失败";exit;}
}

#命令信息
#============================================================

#安装🙂
file_install(){
    
    #判断架构
    arch=$(uname -m)
    if [ "$arch" != "aarch64" ] && [[ "$arch" != armv8* ]]; then 
        echo "不支持的架构 $arch"
        exit 0
    fi
    
    #判断是否安装proot
    if [ -z $(which proot) ]; then 
        #下载
        geturl ${MT_URL}/proot>${PREFIX}/bin/proot
        #设置权限
        chmod 777 ${PREFIX}/bin/proot
    fi
    #判断是否安装minitar
    if [ -z $(which minitar) ]; then 
        #下载
        geturl ${MT_URL}/minitar>${PREFIX}/bin/minitar
        #设置权限
        chmod 777 ${PREFIX}/bin/minitar
    fi
    #判断是否安装proot-tool
    if [ -z $(which proot-tool) ]; then 
        #下载
        geturl ${MT_URL}/proot-tool>${PREFIX}/bin/proot-tool
        #设置权限
        chmod 777 ${PREFIX}/bin/proot-tool
    fi
    
    #判断系统文件
    if [ -d "${DIR}/rootfs" ];then
        echo "当前已安装系统"
        exit 0
    else
        #下载系统
        file_liunx "ubuntu" "jammy"
        #创建文件夹
        mkdir -p ${DIR}
        #安装系统
        proot-tool install "$(pwd)/rootfs.tar.xz" "$DIR"
        #创建启动bin
        geturl ${MT_URL}/sh/210>${PREFIX}/bin/210
        #设置权限
        chmod 777 ${PREFIX}/bin/210
        #创建.bashrc
        geturl ${MT_URL}/sh/.bashrc>${DIR}/.bashrc
    fi
}

#卸载🙂
file_uninstall(){
    chmod -R 777 ${DIR}/rootfs
    rm -rf ${PREFIX}/bin/proot
    rm -rf ${PREFIX}/bin/minitar
    rm -rf ${PREFIX}/bin/proot-tool
    rm -rf ${PREFIX}/bin/210
    rm -rf ${DIR}/rootfs
    echo "卸载成功"
}

#启动🙂
file_start(){
    case ${1} in
        true)
            #自动进入系统
            mkdir -p ${DIR}/rootfs/210
            echo "true" >${DIR}/rootfs/MT_210/start
        ;;
        false)
            #不自动进入系统
            rm -rf ${DIR}/rootfs/MT_210/start
        ;;
        *)
            #启动liunx系统
            exec ${DIR}/start -c 'bash'
        ;;
    esac
}

#更新🙂
file_update(){
    echo "作者大大还没有写"
}

#查看版本信息🙂
file_version(){
    echo "当前版本:${VERSION}"
}

#帮助🙂
file_help(){
    echo "
    MT_Bot
        install     安装系统
        uninstall   卸载系统
        update      更新系统
        start       启动系统
            true    自动进入系统
            false   不自动进入系统
        version     版本系统
        help        帮助
        backups     备份系统
        restore     恢复系统
            系统文件名
    "
}

#备份系统🙂
file_backups(){
        #判断系统文件
    if [ -d "${DIR}/rootfs" ];then
        cd ${DIR}
        #压缩系统
        tar -jcvf rootfs.tar.xz rootfs
        echo "系统备份成功"
        echo "保存在${DIR}/rootfs.tar.xz"
    else
        echo "你还没有安装系统"
    fi
}

#恢复系统🙂
file_restore(){
    #创建文件夹
    mkdir -p ${DIR}
    #安装系统
    proot-tool install "${DIR}/rootfs.tar.xz" "$DIR"
    #创建启动bin
    #geturl ${MT_URL}/sh/210>${PREFIX}/bin/210
    #设置权限
    chmod 777 ${PREFIX}/bin/210
    #创建.bashrc
    geturl ${MT_URL}/sh/.bashrc>${DIR}/.bashrc
    echo "恢复系统成功"
}

#启动命令
main() {
    case ${1} in
        install)
            #安装系统
            file_install
        ;;
        uninstall)
            #卸载系统
            file_uninstall
        ;;
        update)
            #更新系统
            file_update
        ;;
        start)
            #启动系统 #自动启动
            file_start ${2}
        ;;
        version)
            #版本信息
            file_version
        ;;
        help)
            #帮助
            file_help
        ;;
        backups)
            #备份系统
            file_backups
        ;;
        restore)
            #恢复系统 #路径
            file_restore ${2}
        ;;
        *)
            #帮助
            file_help
        ;;
    esac
}
#启动
main "$@"
